<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi

    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/

/**
 * ratings actions.
 *
 * @package    FinalsClub
 * @subpackage ratings
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class ratingsActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('default', 'module');
  }
  
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeUpdate(sfWebRequest $request)
  {
  	//redirect if not a post call or if the value given is greater than 5
    $this->forward404Unless($request->isMethod('post'));
    $this->forward404Unless($request->getParameter('value') <= 5);
  
    $user_id = $this->getUser()->getId();
	$rating = RatingPeer::retrieveByUserIdAndTypeIdAndType($user_id,$request->getParameter('type_id'),$request->getParameter('type'));
	
	
	//if rating exists then alter it else create a new rating
	if($rating)
	{
		$rating->setType($request->getParameter('type'));
		$rating->setTypeId($request->getParameter('type_id'));
		$rating->setValue($request->getParameter('value'));
		
		$rating->save();
	}
	else
	{
		
	 	$rating = new Rating();
		$rating->setType($request->getParameter('type'));
		$rating->setTypeId($request->getParameter('type_id'));
		$rating->setValue($request->getParameter('value'));
		$rating->setUserId($user_id);
		
		$rating->save(); 
	}
	$this->type = $request->getParameter('type');
	$this->rating = $request->getParameter('value');
  }
  
}